package fmod.org.smali.myapplication.views;

import android.content.Context;
import android.support.annotation.AttrRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.widget.FrameLayout;


public class AlertNateDisplayView extends FrameLayout {

    private static String TAG = "AlertNateDisplayView";
    private FrameLayout visibleView;
    private FrameLayout invisibleView;
    private int visibleBottom;
    private int visibleViewTop;

    public AlertNateDisplayView(@NonNull Context context) {
        super(context);
        init();
    }

    public AlertNateDisplayView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public AlertNateDisplayView(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    //默认添加两个View
    private void init() {
        visibleView = new FrameLayout(getContext());
        invisibleView = new FrameLayout(getContext());
        LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

        addView(visibleView, layoutParams);
        addView(invisibleView, layoutParams);
        invisibleView.post(new Runnable() {
            @Override
            public void run() {
                invisibleView.layout(visibleView.getRight(),visibleView.getTop(),visibleView.getRight()+visibleView.getWidth(),visibleView.getBottom());
            }
        });
        //测试代码
        visibleView.setBackgroundColor(getResources().getColor(android.R.color.holo_red_dark));
        invisibleView.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_dark));
    }

    private float lastTouchPointX;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        float currentTouchPointX = event.getRawX();
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                lastTouchPointX = currentTouchPointX;
                break;
            case MotionEvent.ACTION_MOVE:
                float offsetX = currentTouchPointX - lastTouchPointX;
                visibleView.offsetLeftAndRight((int) offsetX);

                visibleViewTop = visibleView.getTop();
                visibleBottom = visibleView.getBottom();
                if (offsetX > 0) {
//                    //是否invizibleview已经出现在屏幕中
//                    int invisibleViewLeft = invisibleView.getLeft();
//                    int invisibleViewWidth = invisibleView.getWidth();
//                    int isHaveView =invisibleView.getLeft()- invisibleView.getWidth();
                    if ( visibleView.getLeft()>0) {
                        setInvisibleViewToVisibleViewRight();
                    } else {
                        setInvisibleViewToVisibleViewLeft();
                    }
                } else {
                    if (visibleView.getRight() > 0) {
                        setInvisibleViewToVisibleViewLeft();
                    } else {
                        setInvisibleViewToVisibleViewRight();
                    }
                }

                lastTouchPointX = currentTouchPointX;
                break;
            default:
                break;
        }
        return true;
    }

    private void setInvisibleViewToVisibleViewLeft() {
        int visibleViewLeft = visibleView.getLeft();
        int invisibleViewLeft = visibleViewLeft - invisibleView.getWidth();
        invisibleView.layout(invisibleViewLeft, visibleViewTop, visibleViewLeft, visibleBottom);
    }

    private void setInvisibleViewToVisibleViewRight() {
        int visibleViewRight = visibleView.getRight();
        int invisibleViewRight = visibleView.getWidth() + visibleViewRight;
        invisibleView.layout(visibleViewRight, visibleViewTop, invisibleViewRight, visibleBottom);
    }
}
